package com.aoxin.mapper.opm;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.aoxin.model.dto.TreeDto;
import com.aoxin.model.opm.SlfOrg;

/**
 * 组织结构Mapper
 * 
 * @author Melody
 * @date 2018年3月20日 下午4:31:17
 */
@Mapper
public interface SlfOrgMapper {

	/**
	 * 删除组织机构
	 * 
	 * @param orgId
	 *            机构ID
	 */
	void deleteByPrimaryKey(Integer orgId);

	/**
	 * 批量删除组织机构
	 * 
	 * @param orgIds
	 *            机构ID集合
	 */
	void deleteByPrimaryKeys(List<Integer> orgIds);

	/**
	 * 添加组织结构
	 * 
	 * @param record
	 *            机构对象
	 */
	void insertSelective(SlfOrg record);

	/**
	 * 根据机构ID查询机构
	 * 
	 * @param orgId
	 *            机构ID
	 * @return 机构
	 */
	SlfOrg selectByPrimaryKey(Integer orgId);

	/**
	 * 修改机构
	 * 
	 * @param record
	 *            机构对象
	 */
	void updateByPrimaryKeySelective(SlfOrg record);

	/**
	 * 批量修改机构状态
	 * 
	 * @param orgIds
	 *            机构ID集合
	 * @param state
	 *            状态
	 */
	void updateStates(@Param("orgIds") List<Integer> orgIds, @Param("state") Integer state);

	/**
	 * 查询机构
	 * 
	 * @param map
	 *            条件集合
	 * @return 机构集合
	 */
	List<SlfOrg> getList(Map<String, Object> map);
	
	List<SlfOrg> getListOther(Map<String, Object> map);
	
	List<SlfOrg> getListWx(Map<String, Object> map);

	/**
	 * 获取记录数
	 *
	 * @param params
	 *            查询条件
	 * @return 记录数
	 */
	Long getRecordCount(Map<String, Object> params);

	/**
	 * 获取下一排序号
	 * 
	 * @param partId
	 *            父ID
	 * @return 序号
	 */
	Long getNextSequence(@Param("partId") Integer partId);

	/**
	 * 检查名称、编码重复
	 * 
	 * @param name
	 *            名称
	 * @param addrCode
	 *            编码
	 * @param orgId
	 *            机构ID
	 * @return 数据量
	 */
	Long checkNameOrAddrCode(@Param("name") String name, @Param("addrCode") String addrCode, @Param("orgId") Integer orgId);

	/**
	 * 查询机构树
	 * 
	 * @param partId
	 *            父ID
	 * @return 机构树
	 */
	List<TreeDto> getOrgTreeList(@Param("partId") Integer partId);
	
    	
}